package com.seraphine.framework.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

/**
 * 描述: 配置token存储方式
 * 作者: panhongtong
 * 创建时间: 2020-10-16 15:27
 **/
@Configuration
public class AccessTokenConfig {

    private String SIGNING_KEY = "SERAPHINE";

    /**
     * 可以定义生成的token存储在哪，可以在Redis、内存，也可以结合JWT
     * @return 提供一个TokenStore实例
     */
    @Bean
    TokenStore tokenStore() {
        // 这里采用jwt，因为采用了jwt，是不需要存储access_token的，因为所有信息都存储在jwt里面了，本质上不是做存储
        return new JwtTokenStore(jwtAccessTokenConverter());
    }

    /**
     * 通过这个实现用户信息和jwt的转换
     * @return
     */
    @Bean
    JwtAccessTokenConverter jwtAccessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        converter.setSigningKey(SIGNING_KEY);
        return converter;
    }

}
